home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 5
/
Apprentice-Release5.iso
/
Source Code
/
Libraries
/
Dots & Pixels
/
sources
/
streamutils.cp
< prev
next >
Wrap
Text File
|
1995-09-29
|
2KB
|
143 lines
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
#include <assert.h>
#include <string.h>
#include <Memory.h>
#include <OSUtils.h>
#include <new.h>
#include <iostream.h>
#include "streamutils.h"
char skip_spaces( istream &destroom)
{
char result = 0;
do {
destroom.get( result);
} while( isspace( result) && (result != '\n') && destroom.good());
if( !destroom.good())
{
//
// assume EOF, pseudo-add a newline at end
//
result = '\n';
}
return result;
}
void skip_till( istream &destroom, const char theLetter)
{
char letter;
do
{
destroom.get( letter);
} while( (letter != theLetter) && (destroom.good()));
}
void skip_till( istream &destroom, const char *theString)
{
typedef enum
{
searching,
matching,
stream_exhausted,
found_it
} search_state;
search_state the_search_state = searching;
while( the_search_state == searching)
{
//
// to find the string, we first have to find the first character:
//
const char *current = &theString[ 0];
skip_till( destroom, *current);
if( destroom.good())
{
the_search_state = matching;
while( the_search_state == matching)
{
current += 1;
if( *current == 0)
{
the_search_state = found_it;
} else {
char letter;
destroom.get( letter);
if( destroom.good())
{
if( *current != letter)
{
the_search_state = searching;
}
} else {
the_search_state = stream_exhausted;
}
}
}
} else {
the_search_state = stream_exhausted;
}
}
}
void copy_till( istream &is, ostream &os, const char theLetter)
{
char letter;
while( true)
{
is.get( letter);
if( !is.good() || (letter == theLetter))
{
break;
}
os.put( letter);
}
if( is.good())
{
is.putback( letter);
}
}
void skip_over_newline( istream &destroom)
{
char letter;
do
{
destroom.get( letter);
} while( (letter != '\n') && (destroom.good()));
}
void skip_till_digit( istream &destroom)
{
char letter;
do
{
destroom.get( letter);
} while( !isdigit( letter) && (destroom.good()));
if( destroom.good())
{
destroom.putback( letter);
}
}
void skip_till_numberstart( istream &destroom)
{
char letter;
do
{
destroom.get( letter);
} while( !is_possible_numberstart( letter) && (destroom.good()));
if( destroom.good())
{
destroom.putback( letter);
}
}